home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / profile.arc / PROFILE.DOC < prev    next >
Text File  |  1985-11-28  |  7KB  |  198 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.      PROFILE (1)           Program Execution Profiler           PROFILE (1)
  68.  
  69.  
  70.      NAME        NAME 
  71.           profile - program profiler 
  72.  
  73.      SYNOPSIS        SYNOPSIS 
  74.           profile program progarg1 progarg2    progargn             profile program progarg1 progarg2 .. progargn 
  75.  
  76.      DESCRIPTION        DESCRIPTION 
  77.           profile                                                                 profile  is used to determine where a program spends most of
  78.           its time executing, in order  to  determine  where  in  that
  79.           program it will be profitable to optimize.  When invoked, it 
  80.                        program                    progarg1 progarg2               will  run    program    ,passing  along progarg1 progarg2 ..
  81.           progargn     program s                                                  progargn as  program's command  line.    After  the  program
  82.           being profiled terminates, a list of addresses is printed to 
  83.           the  standard  output,  along  with  the number of times the
  84.                                program                               profiler interrupted program at that address.  
  85.  
  86.                 SH EXAMPLE 
  87.                 profile tester.exe
  88.                 cs=607c
  89.                 003c : 40
  90.                 0040 : 141
  91.                 0044 : 12
  92.                 0048 : 5
  93.                 004c : 1
  94.                 0050 : 8
  95.                 0054 : 3
  96.                 0058 : 7
  97.                 0060 : 10
  98.                 0064 : 5
  99.                 0068 : 8
  100.                 0710 : 1
  101.  
  102.                                      tester exe                                    What happened here is that tester.exe was executed, and that 
  103.           profile                                                                 profile was of the opionion that it spent most of  its  time
  104.           right around cs:0040.  
  105.  
  106.  
  107.      IMPLEMENTATION        IMPLEMENTATION 
  108.           Profile                                                                  Profile is only able to interrupt the program being profiled 
  109.           18.2 times  per  second.    That  means that in order to get
  110.           meaningful results, your program must take longer than a few 
  111.           seconds to execute, and that it not be  I/O  bound.    That,
  112.           fortunately,  is  a  fairly  good  definition of the sort of
  113.           programs that need profiling.  
  114.  
  115.                                                                cs 607c             You may have noticed that in the above example that  cs=607c 
  116.           was printed  out  before  the  profile  information.    That
  117.                                                         regs exe                  message  was actually  printed by the program regs.exe, that
  118.                          profile com                                              was invoked by profile.com  to  determine  where  MSDOS  was
  119.                                         Regs exe                                  going to  load  tester.exe.   Regs.exe figures out where its
  120.           loaded, and writes this  out  to  a  temporary  file  called
  121.           register         profile com                                            register, which  profile.com then reads in.  This process is
  122.           necessary because there is no other way  to  determine  wher
  123.           MS-DOS is going to load a program.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.                                       -1-
  131.  
  132.  
  133.      PROFILE (1)           Program Execution Profiler           PROFILE (1)
  134.  
  135.  
  136.           Even  stranger,  it  is  necessary  to also have the program
  137.           regs com                                       com                       regs.com available if you want to profile a  '.com' program, 
  138.                            com                                                    as MS-DOS puts '.com' programs in  a  different  place  than
  139.             exe                         '.exe' programs.  
  140.  
  141.           This  program was compiled with the Manx Aztec C86 compiler.
  142.           I have put in  conditional  assembly  flags  to  ease  using
  143.           Lattice,  but  there  is one difference that will have to be
  144.                                  fexecv                                           dealt with.  The Aztec fexecv library function  expects  the
  145.            exe  com                                                               .exe|.com  extension  in  its  specified  file  name,  where
  146.                     forkv                                                         Lattice's forkv does not.   So,  you  will  have  to  use  a
  147.           different  method  than I did to determine whether a program
  148.                  com       exe                                                    is an .com or a .exe program.  I might suggest  opening  the
  149.                                        exe                                        file  and  looking  for the .exe 'magic number' bytes at the
  150.           beginning of the file (4DH and 5A). This will  unfortunately
  151.           slow things down a bit more, but that's life in PC-DOS.  
  152.  
  153.           The  assembly  source  files  might  need  some massaging to
  154.           coincide with the way Lattice wants the segments defined  in
  155.           assembly subroutines.  I didn't bother to put in conditional 
  156.           assembly   directive  to  accomadate  Lattice,  because  the
  157.           conversion process should be  straightforward,  and  a  good
  158.           excersise for 'porting hackers.' 
  159.  
  160.           If  anyone  out  there  cares,  the  Manx Aztec C86 compiler
  161.           (version 3 and later) makes the Lattice compiler look pretty 
  162.           limp, and is  a  lot  more  straightforward  to  work  with.
  163.           Documentation   and  supporting  tools  are  excellent,  and
  164.           performance is unparalleled.  It lives up to the  claims  in
  165.           their  somewhat  incoherent  ads,  and  I'd  recommend it to
  166.           anyone doing serious work with C.  
  167.  
  168.      ENHANCEMENTS        ENHANCEMENTS 
  169.           A more graphic way of displaying profiler results  would  be
  170.           nice,  but  a  more  useful  enhancement  would  be to merge
  171.           profile s                                                               profile's output  with  the  symbol  table  output  of  your
  172.           compiler of choice.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.                                       -2-
  197.  
  198.